#include <sys/stat.h>
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <time.h>

int main(int argc, char **argv){
	struct stat statDuFichier;
	struct tm *ts;
	int val=0;
	char buf[80];

	if (argc != 2){
		fprintf(stderr, "syntaxe: %s <fichier>\n", argv[0]);
		exit(1);
	}

	if (val = stat(argv[1], &statDuFichier)!=0){
		fprintf(stderr, "stat function return %i\n", val);	
		exit(1);
	}
	fprintf(stdout, "- Permissions du fichier     : %o\n", statDuFichier.st_mode);
	fprintf(stdout, "- Numéro d'inode             : %ld\n", statDuFichier.st_ino);
	fprintf(stdout, "- ID du parent               : %d\n", statDuFichier.st_dev);
	fprintf(stdout, "- ID du périphérique         : %d\n", statDuFichier.st_rdev);
	fprintf(stdout, "- Nb de liens                : %d\n", statDuFichier.st_nlink);
	fprintf(stdout, "- UID du fichier             : %d\n", statDuFichier.st_uid);
	fprintf(stdout, "- GID du fichier             : %d\n", statDuFichier.st_gid);
	fprintf(stdout, "- Taille (bytes)             : %lu\n", statDuFichier.st_size);
	ts = localtime(&statDuFichier.st_atime);
	strftime(buf, sizeof(buf), "%a %Y-%m-%d %H:%M:%S %Z", ts);
	fprintf(stdout, "- Date du dernier accès      : %s\n", buf);
	ts = localtime(&statDuFichier.st_mtime);
	strftime(buf, sizeof(buf), "%a %Y-%m-%d %H:%M:%S %Z", ts);
	fprintf(stdout, "- Date dernière modification : %s\n", buf);
	ts = localtime(&statDuFichier.st_ctime);
	strftime(buf, sizeof(buf), "%a %Y-%m-%d %H:%M:%S %Z", ts);
	fprintf(stdout, "- Date dernière modif status : %s\n", buf);
	fprintf(stdout, "- Taille bloc I/O            : %lu\n", statDuFichier.st_blksize);
	fprintf(stdout, "- Nb de bloc de 512 byte     : %lu\n", statDuFichier.st_blocks);
	return 0;
}
